Comprehensive Final Exam for Computer Networks Spring 2006 >>> SOLUTIONS <<< Welcome to the comprehensive final exam for Computer Networks. Read each problem carefully. There are ten required problems each worth 10 points and one extra credit problem worth 10 points. You may have with you a calculator, pencils, blank paper, lucky rabbit's foot, and one 8.5 x 11 inch “formula sheet”. On this formula sheet you may have anything you want (definitions, formulas, homework answers, old exam answers, etc.) as handwritten by you on both sides of the sheet. Photocopies, scans, or computer generated text are not allowed on this sheet. You have 120 minutes for the exam. Unless otherwise stated in the problem, start the answer for each new problem on a separate sheet of paper and write only on one side of each sheet. Good luck and be sure to show your work! Problem #1 Answer the following questions regarding the basics of computer networks and the Internet. a) What are the fundamental measures of interest for a communications system? Throughput, delay, loss, cost, mobility, robustness, and secrecy b) Briefly describe circuit switching and packet switching. Circuit switching uses a dedicated path that is established before communications begins. Packet switching shares a path that need not be established before communications begins. c) What are the four causes of packet delay? Processing, transmission, propagation, and queueuing. d) Roughly, what is the signal propagation delay from here to Atlanta (about 400 miles)? Speed of light propagation delay is about 1 nanosecond per foot, so 1 mile is about 5 microseconds, and thus the propagation delay from Tampa to Atlanta is about 2 milliseconds (400 miles x 5 microsecond/mile). e) Define the open concept. The ability of any two systems conforming to the reference model and associated standards to communicate (and interoperate) with each other. Problem #2 Describe how email works. Describe the key components and flows. Identify key standards that apply. Use figures as needed. About 150 words should be sufficient. Email is an asynchronous communications medium based on sent and received text messages (may include non-text attachments). The three major components of email are user agents, mail servers, and the SMTP (Simple Mail Transfer Protocol). SMTP is used to transfer messages between mail servers using TCP/IP (client/server). SMTP uses ASCII commands and headers. Commands are not authenticated. Between a mail server and a user agent, POP (Post Office Protocol), IMAP (Internet Mail Access Protocol), or HTTP (HyperText Transfer Protocol) is used to access received mail stored in inboxes on the mail server. Mail servers have a fixed IP address and are always powered-on. The user agents need not always be powered-on and also need not be fixed in location or IP address. The figure shows a user agent accessing a mail server with POP, two mail servers exchanging messages using SMTP, and another user agent accessing its mail server using IMAP. user agent server server user agent +-----+ POP +-----+ SMTP +-----+ IMAP +-----+ | |---------| |---------| |---------| | | | | | | | | | +-----+ +-----+ +-----+ +-----+ |-------------------------------| The Internet Problem #3 Attached are server.c and client.c with some “bugs”. Identify the bugs and explain how to fix them. Server program: • Missing welcome_s = socket() after line 25 • Missing htons() in line 28 • Missing bind() after line 29 • Listen must have more than 0 connections in line 31 • Missing addr_len assignment after line 32 • Missing +1 for strlen for \0 in line 38 • Should recv() on connect_s in line 38 • Should send() on connect_s in line 38 • Missing closesocket() of welcome_s after line 42 Client program: • Type of server_addr should be struct sickaddr_in in line 18 • Size of out_buf and in_buf is too small in lines 19 and 20 • Should be SOCK_STREAM and not DATAGRAM in line 24 • Missing htons() in line 28 • Missing +1 for strlen for \0 in line 36 Problem #4 Derive the formula for link utilization (U) for the stop-and-wait protocol. You may assume that a sender always has packets to send and that packets are never lost or in error. If other assumptions are needed to complete a reasonable derivation, state them. We know U = t_useful / (t_useful + t_overhead). t_pr For SAW protocol we have the following time components, t_fr for data frame transmission, t_pr for propagation, t_proc for processing, and t_ack for ack frame transmission. We have: data t_fr t_proc ack t_ack t_useful = t_fr t_pr t_proc t_overhead = 2t_pr + 2t_proc + t_ack. Thus U = t_fr / (t_fr + 2t_pr +2t_proc + t_ack). Problem #5 Answer the following questions about TCP: a) Describe how TCP sets its retransmission time-out (RTO) value. The ideal RTO value would be the exact RTT for the current packet sent. TCP uses an algorithm to estimate the RTT value. The algorithm uses exponential smoothing (alpha is the smoothing parameter) to generate an SRTT (smoothed RTT) as a function of the last measured RTT sample and past history as SRTT(k+1) = alpha*SRTT(k) + (1 – alpha)*RTT_sample(k+1). RTO(k+1) is then beta*SRTT(k+1). A more recent algorithm also estimates the variability in RTT and uses this variability estimate to add a value to SRTT(k+1) instead of just multiplying it by a fixed beta. b) Show the packet flows for TCP connection establishment and termination. Establish Terminate SYN FIN SYN-ACK ACK ACK FIN ACK Problem #6 Below are the first 60 bytes of a TCP/IP packet captured using Ethereal on an Ethernet network. On the last pages of this exam are packet header templates. Decode the packet for the following fields: - Ethernet MAC source and destination addresses (hexadecimal) - IP source and destination addresses (in standard dotted-decimal format) - TCP source and destination port numbers (decimal) - Type of TCP segment (e.g., SYN, FIN, ACK, etc.) - Application layer protocol (and command, if applicable) 08 02 03 ff 73 6d 00 4b 01 ff 74 6c 20 1f 08 80 65 20 f7 f8 68 d7 6e 48 88 40 00 00 2f 54 MAC source MAC dest IP source IP dest TCP source port TCP dest port TCP type Application 7d 00 50 00 63 54 = = = = = = = = 00 80 e0 47 68 50 11 06 5a 45 72 2f 43 ca 79 54 69 31 b7 9b da 20 73 2e 92 83 38 2f 74 31 43 f7 0b 7e 65 0d 08 03 ef 63 6e 0a 00 2a 53 68 2e 48 45 83 50 72 68 6f 00 f7 18 69 74 73 .. ..}..C..C..E. .K..@........*.. ...h.P.Zy.8..SP. ......GET /~chri sten/christen.ht ml HTTP/1.1..Hos 080020f7887d hex 001143b79243 hex 131.247.3.42 131.247.3.1 2152 80 PUSH, ACK HTTP (this is an HTTP 1.1 GET) Problem #7 Answer the following questions about LANs (wired and wireless): a) What is a LAN? Define it precisely. A LAN is a data network optimized for a medium-sized area (10s to 100s of stations and 100s to 1000s of meters). A LAN is owned and operated by a single organization. b) Describe CSMA/CD and BEB as used in IEEE 802.3 Ethernet. CSMA/CD is Carrier Sense Multiple Access / Collision Detection and enables the sharing of a wired medium among multiple hosts. A 1-persistent CSMA algorithm is implemented as follows (for when a host has a frame to transmit): 1) if medium is idle then transmit 2) if medium is busy then wait for medium to go idle and then transmit 3) if detect a collision then xmit a brief jam signal, stop transmitting, wait a random period of time, then (1) The "wait a random period of time" is implemented with Binary Exponential Backoff: while (attempts < 16) k = min(attempts, 10) r = rand(0, 2^k) delay = r * slot_time A slot_time is the time it takes to transmit 64 bytes. This time determines the maximum span of an Ethernet (i.e., tpr <= tfr for frame of 64 bytes and tpr being the end-to-end propagation time). c) Describe CSMA/CA as used in IEEE 802.11 WiFi. CSMA/CA is Collision Avoidance and has both a sender and receiver component. sender algorithm is: The 1) if sense channel idle for DIFS then transmit entire frame 2) if sense channel busy then start random backoff time timer count down while channel is idle transmit when timer expires if no ack, increase random backoff interval and repeat (2) The receiver algorithm is: 1) if frame received then return ACK after SIFS DIFS is distributed interframe time and SIFS is short interframe time. longer than SIFS. DIFS is Problem #8 Answer the following questions bridges and switches: a) What is a bridge? What is a switch? What are the motivations to use bridges and switches? A bridge is a 2-port layer-2 packet filter. A bridge forwards only non-local frames. A bridge has no knowledge of upper layer protocols. A switch is a multiport bridge. Motivations to uses bridges and switches include increasing performance (by localizing traffic), improving reliability (over a single large LAN), and defining organizational boundaries. b) Describe (give) the forwarding and learning algorithm for transparent bridges. receive a frame if (DA is in table) and (DA is local) then not forward else forward if (SA in table) then check/update direction if (SA not in table) then add to table c) What is “media speed” or “wire speed” (in packets per second) for 1500 byte packets on a 1 Gb/s Ethernet link. 10^9 bits/sec / ((1500 + 8 + 12) bytes/frame * 8 bits/byte) = 82345 frames/sec Problem #9 IEEE 802.11 WiFi uses three address fields in its frame format to forward packets from a host in a hotspot to the Internet and from the Internet to a host in a hotspot. Assume that a WiFi access point (AP) is connected to a router port via an Ethernet link. Describe the packet flow from WiFi host to Internet and from Internet to WiFi host. Carefully identify the contents of all WiFi and Ethernet addresses fields. From host to AP to router port: Host to AP: WiFi frame has addr1 = AP MAC, addr2 = host MAC, addr3 = router MAC AP to router: Ethernet frame has DA = router MAC and SA = host MAC From router port to AP to host: Router to AP: Ethernet frame has DA = host MAC, SA = router MAC AP to host: WiFi frame has addr1 = host MAC, addr2 =AP MAC, addr3 = router MAC Problem #10 Answer the following questions about multimedia networking and security: a) What is a jitter buffer? How does it work? Why is it needed? A jitter buffer is a FIFO queue in a receiving host where prefetched video (or audio) data is played-out. The playout rate is the same as the sender rate. The amount of pre-fetched data is such that it can tolerate delay variability in the network without starving (running out of data). A jitter buffer is needed to guarantee a needed constant playout rate (i.e., the same constant rate as at the sender) to the decoder in the receiver. b) If we were to design a next generation network that would give QoS guarantees, what are the four basic principles (or pillars) needed for this network? The four pillars are packet classification, isolation, call admission, and high utilization. c) What are the three desirable properties of secure communications? Describe each property in one sentence. The three properties are confidentiality, authentication, and integrity. Confidentiality is that only sender and receiver should be able to understand the message transmitted. Authentication is to confirm or prove the identity of the sender or receiver in the communication. Integrity assures that the message transmitted is not altered maliciously or by accident to achieve non-repudiation. Extra Credit Give 40 networking-related acronyms (covered in this class, or in the textbook) and define them. For example, TCP = Transmission Control Protocol is good. MCSE = Microsoft Certified Systems Engineering is not good (we did not cover this topic or acronym in class). No specific solution. related to networking. To be graded individually. Key is that the acronym is 1. 2. 3. 4. //======================================================= file = server.c ===== //= A message "server" program to demonstrate sockets programming = //= - TCP/IP client/server model is implemented = //============================================================================= 5. 6. 7. 8. //----- Include files --------------------------------------------------------#include <stdio.h> // Needed for printf() #include <string.h> // Needed for memcpy() and strcpy() #include <windows.h> // Needed for all Winsock stuff 9. 10. //----- Defines --------------------------------------------------------------#define PORT_NUM 1050 // Arbitrary port number for the server 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. //===== Main program ========================================================== void main(void) { WORD wVersionRequested = MAKEWORD(1,1); // Stuff for WSA functions WSADATA wsaData; // Stuff for WSA functions unsigned int welcome_s; // Welcome socket descriptor struct sockaddr_in server_addr; // Server Internet address unsigned int connect_s; // Connection socket descriptor struct sockaddr_in client_addr; // Client Internet address struct in_addr client_ip_addr; // Client IP address int addr_len; // Internet address length char out_buf[100]; // Output buffer for data char in_buf[100]; // Input buffer for data 24. 25. // This stuff initializes winsock WSAStartup(wVersionRequested, &wsaData); 26. 27. 28. 29. // Fill-in server (my) address information and bind the welcome socket server_addr.sin_family = AF_INET; server_addr.sin_port = PORT_NUM; server_addr.sin_addr.s_addr = htonl(INADDR_ANY); 30. 31. // Listen on welcome socket for a connection listen(welcome_s, 0); 32. 33. // Accept a connection. connect_s = accept(welcome_s, (struct sockaddr *)&client_addr, &addr_len); 34. 35. // Print an informational message that accept completed printf("Accept completed \n”); 36. 37. 38. // Send to the client using the connect socket strcpy(out_buf, "Test message from server to client"); send(welcome_s, out_buf, strlen(out_buf), 0); 39. 40. 41. // Receive from the client using the connect socket recv(welcome_s, in_buf, sizeof(in_buf), 0); printf("Received from client... data = '%s' \n", in_buf); 42. 43. 44. 45. // Close sockets and clean-up closesocket(connect_s); WSACleanup(); } 1. 2. 3. 4. //======================================================= file = client.c ===== //= A message "client" program to demonstrate sockets programming = //= - TCP/IP client/server model is implemented = //============================================================================= 5. 6. 7. 8. //----- Include files --------------------------------------------------------#include <stdio.h> // Needed for printf() #include <string.h> // Needed for memcpy() and strcpy() #include <windows.h> // Needed for all Winsock stuff 9. 10. 11. //----- Defines --------------------------------------------------------------#define PORT_NUM 1050 // Port number used at the server #define IP_ADDR "127.0.0.1" // IP address of server (*** HARDWIRED ***) 12. 13. 14. 15. 16. 17. 18. 19. 20. //===== Main program ========================================================== void main(void) { WORD wVersionRequested = MAKEWORD(1,1); // Stuff for WSA functions WSADATA wsaData; // Stuff for WSA functions unsigned int client_s; // Client socket descriptor double server_addr; // Server Internet address char out_buf[10]; // Output buffer for data char in_buf[10]; // Input buffer for data 21. 22. // This stuff initializes winsock WSAStartup(wVersionRequested, &wsaData); 23. 24. // Create a client socket client_s = socket(AF_INET, DATAGRAM, 0); 25. 26. 27. 28. 29. 30. // Fill-in the server's address information and do a connect with the // listening server server_addr.sin_family = AF_INET; server_addr.sin_port = PORT_NUM; server_addr.sin_addr.s_addr = inet_addr(IP_ADDR); connect(client_s, (struct sockaddr *)&server_addr, sizeof(server_addr)); 31. 32. 33. // Receive from the server using the client socket recv(client_s, in_buf, sizeof(in_buf), 0); printf("Received from server... data = '%s' \n", in_buf); 34. 35. 36. // Send to the server using the client socket strcpy(out_buf, "Test message from client to server"); send(client_s, out_buf, strlen(out_buf), 0); 37. 38. 39. 40. // Close and clean-up closesocket(client_s); WSACleanup(); } NOTE: Ethereal traces do not contain the Preamble or SFD. All LAN addresses are 6 bytes. From: W. Stevens, TCP/IP Illustrated, Volume 1 The Protocols, Addison-Wesley, Boston, 1994.